package xyz.ibenben.zhongdian.system.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import lombok.*;
import org.hibernate.validator.constraints.NotEmpty;

import xyz.ibenben.zhongdian.system.entity.enums.HouseTypeEnum;
import xyz.ibenben.zhongdian.system.entity.enums.OrientationEnum;

/**
 * 房屋信息实体类
 * 记录该表记录了房屋名称，室数量路径等字段
 * 表名是house_info
 *
 * @author chenjian
 * @since 2017年9月27日上午10:57:28
 */
@Entity
@Getter
@Setter
@ToString
public class HouseInfo extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 5441997212327447070L;

	/* 房屋名称 */
	@NotEmpty(message = "房屋名称不能为空")
	@Column
	private String houseName;

	/* 室数量 */
	@NotNull(message = "室数量不能为空")
	@Column
	private Integer roomNumber = 0;

	/* 厅数量 */
	@NotNull(message = "厅数量不能为空")
	@Column
	private Integer drawingNumber = 0;

	/* 厨数量 */
	@NotNull(message = "厨数量不能为空")
	@Column
	private Integer kitchenNumber = 0;

	/* 卫数量 */
	@NotNull(message = "卫数量不能为空")
	@Column
	private Integer restroomNumber = 0;

	/* 朝向 */
	@NotNull(message = "朝向不能为空")
	@Column(name="orientation")
	private OrientationEnum orientation;

	/* 房屋面积 */
	@NotNull(message = "房屋面积不能为空")
	@Column
	private BigDecimal houseArea;

	/* 所在楼层 */
	@NotNull(message = "所在楼层不能为空")
	@Column
	private Integer layer;

	/* 总楼层 */
	@NotNull(message = "总楼层不能为空")
	@Column
	private Integer totalLayer;

	/* 小区 */
	@Column
	private String polt;

	/* 详细地址 */
	@NotEmpty(message = "详细地址不能为空")
	@Column
	private String address;

	/* 所在省 */
	@NotNull(message = "所在省不能为空")
	@Column
	private String province;

	/* 所在市 */
	@NotNull(message = "所在市不能为空")
	@Column
	private String city;

	/* 所在区 */
	@NotNull(message = "所在区不能为空")
	@Column
	private String region;

	/* 住宅用途 */
	@NotEmpty(message = "住宅用途不能为空")
	@Column
	private String purpose;

	/* 购买时间 */
	@NotNull(message = "购买时间不能为空")
	@Column
	private Date buyTime;

	/* 产权 */
	@NotNull(message = "产权不能为空")
	@Column
	private Integer propertyRight;

	/* 房屋类型 */
	@Column
	private HouseTypeEnum type;

	/* 房屋图像 */
	@Transient
	private List<HouseImage> list;

}
